package com.bonc.ioc.util;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellType;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 数据导出到Excel工具类
 */
public class ExportUtil {
    /**
     * 设置导出Excel的表名
     *
     * @return
     */
    public String getSheetName() {
        return "报名记录";
    }


    /**
     * 创建 sheet 的第一行,标题行
     *
     * @param sheet
     * @param strTitle
     */
    private void createSheetTitle(HSSFSheet sheet, String strTitle) {
        HSSFRow row = sheet.createRow(0); // 创建该表格(sheet)的第一行
        sheet.setDefaultColumnWidth(4);
        HSSFCell cell = null;
        String[] strArray = strTitle.split(",");
        for (int i = 0; i < strArray.length; i++) {
            cell = row.createCell(i); // 创建该行的第一列
            cell.setCellType(CellType.STRING);
            cell.setCellValue(new HSSFRichTextString(strArray[i]));
        }
    }

    @SuppressWarnings("resource")
    public InputStream getExcelStream(String title) throws IOException {
        // 创建一个 Excel 文件
        HSSFWorkbook wb = new HSSFWorkbook();
        // 创建一个表格 Sheet
        HSSFSheet sheet = wb.createSheet(this.getSheetName());
        // 创建 sheet 的第一行,标题行
        // 行号从0开始计算
        this.createSheetTitle(sheet, title);
        // 设置 sheet 的主体内容
        // this.createSheetBody(exportInfoList, sheet);
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        wb.write(output);
        byte[] ba = output.toByteArray();
        InputStream is = new ByteArrayInputStream(ba);
        return is;
    }
//    private void createSheetBody(List<SysDicInfoVo> exportInfoList, HSSFSheet sheet) {
//        if (exportInfoList == null || exportInfoList.size() < 1) {
//            return;
//        }
//        // 表格(sheet) 的第二行, 第一行是标题, Excel中行号, 列号 是由 0 开始的
//        int rowNum = 1;
//        HSSFCell cell = null;
//        HSSFRow row = null;
//        for (Iterator<SysDicInfoVo> it = exportInfoList.iterator(); it.hasNext(); rowNum++) {
//            SysDicInfoVo exportInfo = (SysDicInfoVo) it.next();
//            if (exportInfo == null)
//                exportInfo = new SysDicInfoVo();
//            row = sheet.createRow(rowNum);
//            int i = 0;
//            cell = row.createCell(i++);
//            cell.setCellType(CellType.STRING);
//            cell.setCellValue(new HSSFRichTextString(rowNum + ""));
//            cell = row.createCell(i++); // name
//            cell.setCellType(CellType.STRING);
//            cell.setCellValue(new HSSFRichTextString(exportInfo.getUserName()));
//            cell = row.createCell(i++); // age
//            cell.setCellType(CellType.STRING);
//            cell.setCellValue(new HSSFRichTextString(exportInfo.getPersonName()));
//            cell = row.createCell(i++); // addr
//            cell.setCellType(CellType.STRING);
//            cell.setCellValue(new HSSFRichTextString(exportInfo.getTime()));
//            cell = row.createCell(i++); // sex
//            cell.setCellType(CellType.STRING);
//            cell.setCellValue(new HSSFRichTextString(exportInfo.getTel()));
//        }
//    }

}